7-Machine learning

Thibaut FABACHER

GMRC

Techniques prédictives/Apprentissage machine

Machine Learning

Machine Learning

Machine Learning

  • Domaine de l’intelligence artificielle

  • Consiste à entraîner des modèles informatiques à effectuer des tâches sans avoir été explicitement programmés pour les accomplir

  • Les modèles peuvent s’améliorer au fil du temps en apprenant à partir de données

  • Exemple : Traduction automatique Reconnaissance vocale…

Différence Stat / Machine learning

  • décrire et comprendre les phénomènes à partir de données

  • hypothetico-déductive (part d’hypothèses et utilise des tests statistiques pour les vérifier)

  • données souvent de taille limitée et structurées

  • modèles simples et faciles à comprendre

  • prédire les résultats futurs à partir de données passées

  • inductive (part de données et essaie de déduire les règles sous-jacentes)

  • peut être utilisé avec des données de grande taille et non structurées

  • modèles complexes et difficiles à interpréter (réseaux de neurones, arbres de décision)

Apprentissage supervisé

  • modèle est entraîné sur un jeu de données annotées
  • Le jeu de données contient des exemples d’entrée et de sortie souhaités
  • L’objectif: généraliser apprentissage à partir de ces exemples pour prédire la sortie correcte pour de nouvelles entrées

Apprentissage supervisé

\[\hat{y} = f(x, \theta)\]

\(x\) est l’entrée, \(\theta\) sont les paramètres du modèle et \(\hat{y}\) est la valeur prédite par le modèle pour l’entrée \(x\).

Objectifs : Trouver les valeurs optimales de \(\theta\) qui minimisent l’erreur entre les valeurs prédites et valeurs réelles.

  • Fonction de coût avec optimisation

Apprentissage non supervisé

Apprentissage non supervisé

  • Découvrir une structure au sein d’un ensemble d’individus caractérisés par des covariables X

  • Label est inconnu

Apprentissage non supervisé

\[\hat{y} = f(x, \theta)\]

\(x\) est l’entrée, \(\theta\) sont les paramètres du modèle et \(\hat{y}\) est la valeur prédite par le modèle pour l’entrée \(x\).

Objectifs : trouver des structures ou des patterns dans les données qui peuvent être utilisés pour effectuer des tâches utiles

Les paramètres du modèle sont mis à jour en utilisant une fonction de coût et une méthode d’optimisation afin de trouver des structures ou des patterns dans les données

Supervisé / Non supervisé

Supervisé / Non supervisé

Apprentissage Actif

Apprentissage par renforcement

Transfer learning

Entrainement d’un modèle

Exemple sur un regression linéaire :

\[Y=X\cdot\theta + \epsilon\]

Solution dans le cadre d’une régression linéaire

On cherche \(\hat{\theta} = \binom{\hat{a}}{\hat{b}}\)\(\hat{y} = \hat{a}\cdot x+\hat{b}\) pour que \(\hat{y}\) soit le plus proche de \(y\)

Les données sont fausses ?

Les données sont fausses ?

Comment on fait pour entrainer :

On trace une ligne, on mesure la qualité de la ligne tracé, on modifie la ligne pour améliorer ça qualité et on répète

Fonctions de coût

Fonction a minimiser pour trouver la meilleure solution

  1. Erreur quadratique moyenne (MSE)
  • Utilisée pour les tâches de régression

  • Formule: \[MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2\]

  • Simple à calculer et à interpréter, mais sensible aux outliers et peu robuste face à la skewness des données

  1. Erreur absolue moyenne (MAE)
  • Utilisée pour les tâches de régression

  • Formule: \[MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|\]

  • Moins sensible aux outliers que le MSE, mais moins intuitive à interpréter

  1. Erreur quadratique moyenne de racine (RMSE)
  • Utilisée pour les tâches de régression

  • Formule: \[RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}\]

  • racine carrée de l’erreur quadratique moyenne (MSE)

  1. Erreur de classification
  • Utilisée pour les tâches de classification

  • Formule: \[Err_{class} = \frac{n_{erreurs}}{n}\]

  • Simple à calculer, mais ne prend pas en compte la probabilité des prédictions

Exemple sur données fictives

Entrainement d’un modèle de régression linéaire

fit1 <- lm(y ~ x, data = BDD)

summary(fit1)

Call:
lm(formula = y ~ x, data = BDD)

Residuals:
    Min      1Q  Median      3Q     Max 
-16.907  -4.388  -0.611   3.877  55.989 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  51.9072     0.9340   55.58   <2e-16 ***
x             2.0037     0.1812   11.05   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 9.266 on 98 degrees of freedom
Multiple R-squared:  0.555, Adjusted R-squared:  0.5505 
F-statistic: 122.2 on 1 and 98 DF,  p-value: < 2.2e-16

Calcul de la MSE

y_pred <- predict(fit1, BDD)
head(y_pred)
       1        2        3        4        5        6 
35.76273 54.90245 48.33695 44.46728 56.93495 51.86231 
mse <- mean((BDD$y - y_pred)^2)

print(mse)
[1] 84.14618
p2<-BDD %>% ggplot(aes(x=x,y=y))+geom_jitter()+theme_light()+
  geom_smooth( method = lm, formula = y ~ x, se = FALSE)
p2

Entrainement d’un modèle de régression linéaire avec effet quadratique

fit2 <- lm(y ~ poly(x,3), data = BDD)

summary(fit2)

Call:
lm(formula = y ~ poly(x, 3), data = BDD)

Residuals:
     Min       1Q   Median       3Q      Max 
-11.2091  -2.9193   0.2203   3.1248  14.1816 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   53.202      0.469  113.44   <2e-16 ***
poly(x, 3)1  102.443      4.690   21.84   <2e-16 ***
poly(x, 3)2   55.606      4.690   11.86   <2e-16 ***
poly(x, 3)3   56.667      4.690   12.08   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 4.69 on 96 degrees of freedom
Multiple R-squared:  0.8883,    Adjusted R-squared:  0.8848 
F-statistic: 254.6 on 3 and 96 DF,  p-value: < 2.2e-16

Calcul de la MSE

y_pred <- predict(fit2, BDD)
mse <- mean((BDD$y - y_pred)^2)

print(mse)
[1] 21.1143
p2<-BDD %>% ggplot(aes(x=x,y=y))+geom_jitter()+theme_light()+
  geom_smooth( method = lm, formula = y ~poly(x,3), se = FALSE)
p2
p1<-BDD2 %>% ggplot(aes(x=x,y=y))+geom_jitter()+theme_light()+
  geom_smooth( method = lm, formula = y ~poly(x,1), se = FALSE)+
  ggtitle("y ~ x")
p2<-BDD2 %>% ggplot(aes(x=x,y=y))+geom_jitter()+theme_light()+
  geom_smooth( method = lm, formula = y ~poly(x,2), se = FALSE)+
  ggtitle("y ~ poly(x,2)")
p3<-BDD2 %>% ggplot(aes(x=x,y=y))+geom_jitter()+theme_light()+
  ggtitle("y ~ poly(x,3)")+
  geom_smooth( method = lm, formula = y ~poly(x,3), se = FALSE)
p4<-BDD2 %>% ggplot(aes(x=x,y=y))+geom_jitter()+theme_light()+
  geom_smooth( method = lm, formula = y ~poly(x,4), se = FALSE)+
  ggtitle("y ~ poly(x,4)")
grid.arrange(p1, p2, p3, p4, nrow = 2)

Classification binaire

\[y_i \in {0, 1}\]

\[\hat{y} = f(X)\]

Fonction de seuil nécessaire pour revenir sur 0,1

ex : \(\hat{y} \geq 0.5\) classe 1 et \(\hat{y} < 0.5\) classe 0

évaluation de l’algo par \[y_i \neq \hat{y}_i\]

Mesure de performance pour un classifieur binaire

Tableau de contingence

y = 1 y = 0
y_pred = 1 TP FP
y_pred = 0 FN TN

Sensibilité/rappel

y = 1 y = 0
y_pred = 1 TP FP
y_pred = 0 FN TN
  • \[\text{Sensibilité} = \frac{TP}{TP + FN}\]

  • détecter correctement les exemples positifs

  • utiles quand exemples positifs sont rares

Spécificité

y = 1 y = 0
y_pred = 1 TP FP
y_pred = 0 FN TN
  • \[\text{Spécificité} = \frac{TN}{TN + FP}\]

  • détecter correctement les exemples négatifs

Précision / VPP

y = 1 y = 0
y_pred = 1 TP FP
y_pred = 0 FN TN
  • \[\text{Précision} = \frac{TP}{TP + FP}\]

  • prédire correctement la classe positive

VPN

y = 1 y = 0
y_pred = 1 TP FP
y_pred = 0 FN TN
  • \[\text{VPN} = \frac{TN}{TN + FN}\]

  • prédire correctement la classe négative

Accuracy / taux de bonnes réponses

y = 1 y = 0
y_pred = 1 TP FP
y_pred = 0 FN TN
  • \[\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}\]

  • prédire correctement la classe de chaque exemple

  • utile lorsque les classes sont équilibrées

Combinaison d’indicateur

Courbe ROC

  • performance du classifieur en fonction du seuil de décision

  • sensibilité et spécificité à chaque seuil

Courbe ROC

  • AUC : aire sous la courbe

  • Mesure agrégée de performance

  • AUC = 1 modèle parfait

  • AUC = 0,5 modèle équivalent à choisir au hasard

AUPRC

  • Average Precision recall Curve

  • précision et rappel

  • Mieux pour les classifications non équilibrées

F1 Score

\[\text{F1 Score} = 2\times\frac{\text{Précision}\times\text{Sensibilité}}{\text{Précision}+\text{Sensibilité}}\]

Exemple sur R

Le machine learning en pratique

Problématiques du machine learning

Sur et sous apprentissage

Principes d’entrainement et de validation

  • Séparation des données en jeu d’entrainement et de test

Cross validation

Validation croisée, itérative avec brassage des données